package com.gxa.ibear.common;

import lombok.Data;

import java.io.Serializable;

@Data
public class R<T> implements Serializable {
    private String msg;
    private Integer code;
    private T data;

    /**
     * 返回成功状态的一个r方法
     * @param <T>
     * @return
     */
    public static <T> R success(){
        R r = new R();
        r.setMsg("success");
        r.setCode(1);
        return r;
    }
    /**
     * 返回成功状态的一个r方法且有返回数据
     * @param data
     * @param <T> 泛型类型
     * @return
     */
    public static <T> R<T> success(T data){
        R<T> r = new R<>();
        r.setMsg("success");
        r.setCode(1);
        r.setData(data);
        return r;
    }
    public static <T> R<T> success(T data,Integer code){
        R<T> r = new R<>();
        r.setMsg("success");
        r.setCode(code);
        r.setData(data);
        return r;
    }

    /**
     * 程序成功完成执行，但业务没有成功实现的时候的返回
     * 例如：注册失败
     * @param <T>
     * @return
     */
    public static <T> R failed(){
        R r = new R();
        r.setMsg("failed");
        r.setCode(0);
        return r;
    }

    /**
     *
     * @param msg 失败的消息
     * @param <T>
     * @return
     */
    public static <T> R failed(String msg){
        R r = new R();
        r.setMsg(msg);
        r.setCode(0);
        return r;
    }

    public static <T> R failed(Integer code,String msg){
        R r = new R();
        r.setMsg(msg);
        r.setCode(code);
        return r;
    }
}
